#include "StdAfx.h"
#include "Utils.h"

#include <string.h>


Utils::Utils(void)
{
}


Utils::~Utils(void)
{
}

bool Utils::IsFileExists(LPCTSTR file)
{
	if(::GetFileAttributes(file)==-1)	{
		return false;
	} else {
		return true;
	}
}

std::string Utils::T2string(LPCTSTR str)
{
#ifdef UNICODE
    int ret = ::WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
    char * buffer = new char[ret + 1];
    ::WideCharToMultiByte(CP_ACP, 0, str, -1, buffer, ret, NULL, NULL);
    buffer[ret] = '\0';
    std::string tmp;
    tmp = buffer;
    delete[] buffer;
    return tmp;
#else
    return std::string(str);
#endif
}

int Utils::string2TCHAR(const char * str, TCHAR * output, int len)
{
#ifdef UNICODE
	int ret = ::MultiByteToWideChar(CP_ACP, 0, str, -1, output, len);
	return ret;
#else
	int l = strlen(str);
	if (l > len)
		l = len;
	strncpy(output, str, l);
	return l;
#endif
}

#if 0
3.  UTF-8 to Unicode
wstring UTF8ToUnicode( const string& str )
{
 int  len = 0;
 len = str.length();
 int  unicodeLen = ::MultiByteToWideChar( CP_UTF8,
            0,
            str.c_str(),
            -1,
            NULL,
            0 );  
 wchar_t *  pUnicode;  
 pUnicode = new  wchar_t[unicodeLen+1];  
 memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));  
 ::MultiByteToWideChar( CP_UTF8,
         0,
         str.c_str(),
         -1,
         (LPWSTR)pUnicode,
         unicodeLen );  
 wstring  rt;  
 rt = ( wchar_t* )pUnicode;
 delete  pUnicode; 
 
 return  rt;  
}
4.  Unicode to UTF-8    
string UnicodeToUTF8( const wstring& str )
{
 char*     pElementText;
 int    iTextLen;
 // wide char to multi char
 iTextLen = WideCharToMultiByte( CP_UTF8,
         0,
         str.c_str(),
         -1,
         NULL,
         0,
         NULL,
         NULL );
 pElementText = new char[iTextLen + 1];
 memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );
 ::WideCharToMultiByte( CP_UTF8,
         0,
         str.c_str(),
         -1,
         pElementText,
         iTextLen,
         NULL,
         NULL );
 string strText;
 strText = pElementText;
 delete[] pElementText;
 return strText;
}
#endif



